home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 003 / db2ios.arc / ADD.SIG < prev    next >
Encoding:
Text File  |  1983-01-04  |  20.6 KB  |  497 lines

  1. * add.sig 08/18/83
  2. *******************************************************************
  3. * THIS MODULE ADDS RECORDS TO THE ORDERS (SIG/M) DATA BASE.
  4. * IT IS WELL WORTH PRINTING OUT AND STUDYING BECAUSE IT CON-
  5. * TAINS MANY PRACTICAL HINTS FOR WRITING A dBASE PROGRAM.
  6. * COMMENTS ARE INSERTED AT APPROPRIATE POINTS IN THE FILE.
  7. * COMMENTS ALREADY IN MAIN.SIG ARE NOT REPEATED.
  8. ******************************************************************
  9. * WE WANT TO GET RID OF THE INDEX WHEN WE ADD. IF YOU
  10. * HAVE A SMALL DATA BASE IT IS OK - BUT OTHERWISE YOU
  11. * HAVE TO WAIT FOR EACH RECORD TO BE INDEXED. MOST COMMERCIAL
  12. * PROGRAMS INDEX EVERY TIME AND IT COSTS YOU TIME. HERE WE
  13. * GIVE YOU THE OPTION OF INDEXING OR NOT WHEN YOU EXIT. IF
  14. * YOU DO NOT, THE RECORDS ARE THERE, BUT YOU WILL NOT FIND
  15. * THEM EXCEPT BY THE STRING SEARCH IN SEARCH1.SIG (SINCE IT
  16. * USES THE 'LOCATE FOR' COMMAND TO FIND NON INDEXED DATA.
  17. * THE INDEX IS STILL ON - SO WE TAKE IT OFF
  18. SET INDEX TO
  19. ERASE
  20. STORE t TO first
  21. STORE t TO more
  22. * because we use three screens in this add - it makes for a neater
  23. * screen if we get rid of the colons around the add field
  24. SET COLON OFF
  25. DO WHILE more
  26.     IF first
  27.         * get record number for automatic order number addition
  28.         GOTO bottom
  29.         @  2, 0 SAY "+---------------------------------------"
  30.         @  2,39 SAY "---------------------------------------+"
  31.         @  3, 5 SAY "ORDER NUMBER:"
  32.         @  3,43 SAY "Complete:"
  33.         @  4, 8 SAY "Last name:"
  34.         @  4,46 SAY "First:"
  35.         @  5,10 SAY "Address:"
  36.         @  6, 9 SAY "(line 2):"
  37.         @  7, 9 SAY "(line 3):"
  38.         @  8,13 SAY "City:"
  39.         @  8,46 SAY "State:"
  40.         @  8,65 SAY "ZIP:"
  41.         @  9,11 SAY "Amount:"
  42.         @  9,46 SAY "Enter:"
  43.         @  9,64 SAY "Ship:"
  44.         @ 11,00 SAY "Enter Individual Volumes Ordered (999 when done): "
  45.         @ 12, 2 SAY "Volumes:"
  46.         @ 14, 2 SAY "Remarks:"
  47.         @ 15, 2 SAY "Remarks:"
  48.         @ 16, 0 SAY "Backorder:"
  49.         @ 17,44 SAY "Catalog:"
  50.         @ 18, 2 SAY "Shipped:"
  51.         @ 18,26 SAY "Shipped:"
  52.         @ 18,62 SAY "Update:"
  53.         @ 19, 0 SAY "+---------------------------------------"
  54.         @ 19,39 SAY "---------------------------------------+"
  55.     ENDIF first
  56.     STORE f TO first
  57.     * IN SIG/M.CMD WE HAVE SAVED OUR VARIABLES AS A FILE ADD.MEM. WE NOW
  58.     * BRING THEM UP (NOTE - IN ADD.INV WHERE ARE VARIABLES ARE ESSENTIALLY
  59.     * NUMERIC WE DO NOT USE THIS METHOD.  IF YOU RUN THE SAME PROGRAM ON
  60.     * BOTH CP/M 80 AND CP/M 86 FIRST DELETE ALL .MEM FILES AS THEY CANNOT
  61.     * BE MOVED BETWEEN OPERATING SYSTEMS.
  62.     RESTORE FROM ADD
  63.     * WE ASSUME ENTER DATE IS TODAY
  64.     STORE DATE() TO mentered
  65.     STORE DATE() TO mshipped
  66.     * we went to the bottom of the file - i.e. the last record -
  67.     * we add one to that and get  4 digits of the order number
  68.     STORE # TO ord:num
  69.     STORE ord:num + 1 TO ord:num
  70.     * change to character field from numeric
  71.     STORE STR(ord:num,4,0) TO ord:num1
  72.     * however, we want the order number to give us some date data
  73.     * so we will use the date as part of the order number
  74.     * it will be nnnnMMDDY. only way to get a duplicate order number
  75.     * would be to add records, delete, pack and add more records on same
  76.     * so please - pack at the end of the day
  77.     STORE ord:num1 + $(DATE(),1,2) + $(DATE(),4,2) + $(DATE(),8,1) TO morder
  78.     STORE 'Y' TO mcomp
  79.     STORE 'N' TO mcatalog
  80.     STORE 'Add Records Module' TO mode
  81.     STORE 'Enter as many records as you want.' TO prompt1
  82.     STORE "When done, enter 'blank' for last name" TO prompt2
  83.     STORE "or Control 'Q' to end session" TO prompt3
  84.     IF $(DATE(),1,2) <> '00' .AND. mdayu =  '  '
  85.         STORE DATE() to mdayu
  86.     ENDIF
  87.     STORE DATE() TO mshipped
  88.     * NOTE THE SHIFTS BETWEEN GET AND SAY. THIS SCREEN IS
  89.     * REALLY A 3 STAGE SCREEN. THE FIRST PART CONTAINS THE
  90.     * CUSTOMER DATA. THEN WE INPUT ALL VOLUMES ORDERED AND
  91.     * THE PROGRAM AUTOMATICALLY WRITES THEM TO THE FILE
  92.     * UNTIL FINISHED. BECAUSE OF THIS WE WANT TO MAKE SURE
  93.     * DATA FROM THE LAST RECORD IS ELIMINATED.
  94.     *FIRST MAKE SURE WE WANT TO ADD A RECORD
  95.     @  1,25 SAY mode
  96.     @  3,19 SAY morder picture '999999999'
  97.     @  3,53 SAY '  '
  98.     @  4,19 GET mlname
  99.     @  4,53 SAY mfname
  100.     @  5,19 SAY maddr1
  101.     @  6,19 SAY maddr2
  102.     @  7,19 SAY maddr3
  103.     @  8,19 SAY mcity
  104.     @  8,53 SAY mstate picture '!!'
  105.     @  8,70 SAY mzip picture '99999'
  106.     @  9,19 SAY '           '
  107.     @  9,53 SAY '        '
  108.     @ 11,62 SAY mstatus
  109.     @ 12,11 SAY mvol1
  110.     @ 14,11 SAY mrem1
  111.     @ 15,11 SAY mrem2
  112.     @ 16,11 SAY mbo
  113.     @ 17,53 SAY '  '
  114.     @ 18,11 SAY '        '
  115.     @ 18,35 SAY '        '
  116.     @ 18,70 SAY '        '
  117.     @ 20,12 SAY prompt1
  118.     @ 21,12 SAY prompt2
  119.     @ 22,12 SAY prompt3
  120.     READ
  121.     * IF WE DO WANT TO ADD A RECORD - THEN DO IT
  122.     IF mlname <> '    '
  123.         @  1,25 SAY mode
  124.         @  3,19 SAY morder picture '999999999'
  125.         @  3,53 SAY '  '
  126.         @  4,19 SAY mlname
  127.         @  4,53 GET mfname
  128.         @  5,19 GET maddr1
  129.         @  6,19 GET maddr2
  130.         @  7,19 GET maddr3
  131.         @  8,19 GET mcity
  132.         @  8,53 GET mstate picture '!!'
  133.         @  8,70 GET mzip picture '99999'
  134.         @  9,19 GET mamt
  135.         @  9,53 SAY mentered picture '99/99/99'
  136.         @ 11,62 SAY mstatus
  137.         @ 12,11 SAY mvol1
  138.         @ 14,11 SAY mrem1
  139.         @ 15,11 SAY mrem2
  140.         @ 16,11 SAY mbo
  141.         @ 17,53 SAY '  '
  142.         @ 18,11 SAY mbo:ship picture '99/99/99'
  143.         @ 18,35 SAY mbo2:ship picture '99/99/99'
  144.         @ 18,70 SAY mdayu picture '99/99/99'
  145.         @ 20,12 SAY prompt1
  146.         @ 21,12 SAY prompt2
  147.         @ 22,12 SAY prompt3
  148.         READ
  149.         * ALWAYS USE CLEAR GETS AFTER GETS. OTHERWISE YOUR PROGRAM WILL
  150.         * HAVE A HEART ATTACK. SEE PAGE 71 OF THE dbase manual
  151.         CLEAR GETS
  152.         * WE NOW GO TO PART 2 OF THE SCREEN. WE STORE 999
  153.         * TO MVOL SO THAT ON OUR LAST RECORD WE CAN EXIT THE ADD EASIER
  154.         STORE t TO getit
  155.         STORE '            ' TO mstatus
  156.         * ADD AS MANY RECORDS AS YOU WANT. MSTATUS SHOWS WHETHER THE
  157.         * ITEM WAS IN STOCK. MVOL1 SHOWS WHAT WAS IN STOCK, MBO WHAT WAS
  158.         * BACKORDERED. IF 999 NO MORE VOLUMES
  159.         DO WHILE getit
  160.             @ 11,62 SAY mstatus
  161.             @ 12,11 SAY mvol1
  162.             @ 16,11 SAY mbo
  163.             @ 11,48 GET mvol
  164.             READ
  165.             @ 11,62
  166.             CLEAR GETS
  167.             IF mvol = 999
  168.                 STORE f TO getit
  169.                 STORE '             ' TO mstatus
  170.                 store f TO avoid
  171.                 * IF THE VOLUME WAS NOT 999 GO TO THE OTHER DATA BASE
  172.             ELSE
  173.                 USE STOCK
  174.                 * FIND THE RECORD FOR THAT VOLUME. WE USE THE +1 BECAUSE OF VOL. 0
  175.                 * YOU COULD JUST AS EASILY (ALTHOUGH SLIGHTLY SLOWER) FIND
  176.                 * ANY DATA IN AN INDEXED OR NON-INDEXED FILE.
  177.                 * YOU COULD ALSO USE THE SELECT PRIMARY AND SECONDARY COMMAND HERE -
  178.                 * BUT FOR THIS DATA BASE, THIS IS THE SIMPLEST WAY OF DOING IT.
  179.                 LOCATE FOR # = mvol + 1
  180.                 * IF THE VOLUME WAS IN THE FILE
  181.                 IF .NOT. EOF
  182.                     GOTO mvol + 1
  183.                     * WE NEED ANOTHER CONTROL VARIABLE - WITHOUT IT VOLUMES NOT
  184.                     * IN THE FILE WOUND UP BEING WRITTEN TO THE BACKORDERED LIST
  185.                     STORE t TO avoid
  186.                     * WE NOW WRITE TO THE OTHER FILE AND ADJUST THE INVENTORY
  187.                     IF open:inv - back:ord - wait:ship + recvd + pend > 0
  188.                         REPLACE change1 WITH t
  189.                         REPLACE open:inv WITH open:inv -1
  190.                         STORE 'IN STOCK ' to mstatus
  191.                         REPLACE ship WITH ship + 1
  192.                         REPLACE daych1 WITH mentered
  193.                     ELSE
  194.                         REPLACE change2 WITH t
  195.                         REPLACE back:ord WITH back:ord+1
  196.                         STORE 'BACKORDER' TO mstatus
  197.                         REPLACE backship WITH backship + 1
  198.                         REPLACE daych2 WITH mentered
  199.                     ENDIF open:inv
  200.                 ELSE
  201.                     * if no such volume
  202.                     STORE 'TRY AGAIN ' TO mstatus
  203.                     STORE f TO avoid
  204.                 ENDIF .not. eof
  205.                 * BACK TO OUR MAIN DATA BASE
  206.                 * TELL THEM WHAT YOU FOUND AT STATUS AND LIST IT ON THE ORDER OR BACKORDER LINE
  207.                 * NOTE HOW WE BUILD UP THE STRING THAT IS THE LIST OF VOLUMES
  208.                 USE SIG/M
  209.                 IF avoid = t
  210.                     IF mstatus = 'IN STOCK'
  211.                         STORE TRIM(mvol1) + STR(mvol,3,0) + ','  TO mvol1
  212.                     ELSE
  213.                         STORE TRIM(mbo) + STR(mvol,3,0) + ','  TO mbo
  214.                     ENDIF mstatus = 'IN STOCK"
  215.                 ENDIF avoid
  216.             ENDIF mvol
  217.         ENDDO while getit
  218.         * BLANK THE STATUS LINE AND GO TO PART 3 OF THE SCREEN AFTER 999
  219.         * NOTE THAT YOU NEED NOT ENTER DATA IN THE ORDER IT APPEARS ON
  220.         * THE SCREEN - WE DON'T KNOW IF THE ORDER IS COMPLETE OR BACKORDERED
  221.         * UNTIL THE END. YOU SET THE ORDER - BUT DON'T DRIVE THE USER CRAZY.
  222.         STORE '             ' TO mstatus
  223.         @ 11,62 SAY mstatus
  224.         @ 14,11 GET mrem1
  225.         @ 15,11 GET mrem2
  226.         @ 17,53 GET mcatalog picture '!'
  227.         @ 18,11 GET mbo:ship picture '99/99/99'
  228.         @ 18,35 GET mbo2:ship picture '99/99/99'
  229.         @  9,70 GET mshipped picture '99/99/99'
  230.         @  3,53 GET mcomp picture '!'
  231.         READ
  232.         CLEAR GETS
  233.         * DETERMINE IF THERE IS INCOMPLETE OR INCORRECT DATA. THIS PART OF THE
  234.         * PROGRAM CAN HANDLE A SUBSTANTIAL EDITING MODULE -
  235.         DO CASE
  236.             CASE .NOT. (mcomp = 'Y' .OR. mcomp = 'N')
  237.                 STORE t TO error
  238.             CASE .NOT. (mcatalog = 'Y' .OR. mcatalog = 'N' .OR. mcatalog = 'B')
  239.                 STORE t TO error
  240.             OTHERWISE
  241.                 STORE f TO error
  242.         ENDCASE
  243.         IF error
  244.             @ 01,00
  245.             @ 20,00
  246.             @ 21,00
  247.             @ 22,00
  248.             @ 1,18 SAY 'Please Correct the Indicated Data'
  249.             STORE t to an:error
  250.             DO WHILE an:error
  251.                 DO CASE
  252.                     CASE  .NOT. (mcomp = 'Y' .OR. mcomp = 'N')
  253.                         @ 21,15 SAY 'Must answer "Y" or "N" if shipping completed                '
  254.                         @  3,53 GET mcomp picture '!'
  255.                         READ
  256.                         @ 1,00
  257.                     CASE .NOT. (mcatalog = 'Y' .OR. mcatalog = 'N' .OR. mcatalog = 'B')
  258.                         @ 21,15 SAY 'Catalog is either "Y", "N" or "B" (backordered)'
  259.                         @ 17,53 GET mcatalog picture '!'
  260.                         READ
  261.                         @ 1,00
  262.                     OTHERWISE
  263.                         STORE f TO an:error
  264.                 ENDCASE
  265.             ENDDO while an:error
  266.         ENDIF error
  267.         * GIVE THEM A SECOND TRY AT THE DATA. IN MOST CASES IT WILL BE CORRECT, BUT
  268.         * WHY NOT GIVE THEM ANOTHER CRACK. IT IS SIMPLER TO REPEAT THE WHOLE ROUTINE
  269.         * ALTHOUGH YOU COULD LOOP BACK TO THE BEGINNING. WE ALSO WANT A WAY TO
  270.         * READJUST THE INVENTORY INCASE YOU PUT IN A WRONG VOLUME.
  271.         STORE 'Y' TO command
  272.         @ 20,00
  273.         @ 21,00
  274.         @ 22,00
  275.         @ 21,15 SAY 'IS THE ABOVE CORRECT ?                         '
  276.         @ 21,48 GET command picture '!'
  277.         READ
  278.         @ 21,00
  279.         IF command = 'N'
  280.             ERASE
  281.             @ 04,00 SAY "DO YOU WANT TO ELIMINATE ANY VOLUMES ON THE ORDERED OR BACKORDER LIST ? "
  282.             @ 04,70 GET command picture '!'
  283.             READ
  284.             IF command = 'Y'
  285.                 @ 06,00 SAY "Items you enter here will automatically be adjusted in the Inventory."
  286.                 @ 07,00 SAY "After you have made the changes you will then be able to edit"
  287.                 @ 08,00 SAY "the list of disks shipped and/or backordered."
  288.                 @ 09,00 SAY "Enter 999 when done"
  289.                 STORE t TO getit
  290.                 STORE 999 TO mvol
  291.                 DO WHILE getit
  292.                     @ 11,10 SAY "INVENTORY TO BE ADJUSTED FOR VOLUME "
  293.                     @ 14,02 SAY "Volumes"
  294.                     @ 14,11 SAY mvol1
  295.                     @ 16,00 SAY "Backorder"
  296.                     @ 16,11 SAY mbo
  297.                     @ 11,48 GET mvol
  298.                     READ
  299.                     CLEAR GETS
  300.                     IF mvol = 999
  301.                         STORE f TO getit
  302.                     ELSE
  303.                         USE STOCK
  304.                         LOCATE FOR # = mvol + 1
  305.                         IF .NOT. EOF
  306.                             GOTO mvol + 1
  307.                             DO CASE
  308.                                 CASE open:inv - back:ord - wait:ship + recvd + pend > 0
  309.                                     REPLACE open:inv WITH open:inv +1
  310.                                     REPLACE ship WITH ship -1
  311.                                 CASE (open:inv - back:ord - wait:ship + recvd + pend = 0 .AND. back:ord = 0)
  312.                                     REPLACE open:inv WITH open:inv + 1
  313.                                     REPLACE ship WITH ship -1
  314.                                 CASE back:ord >0
  315.                                     REPLACE back:ord WITH back:ord-1
  316.                                     REPLACE backship WITH backship -1
  317.                             ENDCASE
  318.                         ENDIF .not. eof
  319.                         USE SIG/M
  320.                     ENDIF mvol
  321.                 ENDDO while getit
  322.                 * AT THIS POINT WE ARE DOING SOME TIGHT EDITING - SO PROTECT AGAINST
  323.                 * A SLIP OF THE FINGERS
  324.                 SET CONFIRM ON
  325.                 @ 11,10 SAY "Please adjust data 'Volumes' and/or 'Backorders'  "
  326.                 @ 14,02 SAY "Volumes"
  327.                 @ 14,11 GET mvol1
  328.                 @ 16,00 SAY "Backorder"
  329.                 @ 16,11 GET mbo
  330.                 READ
  331.                 CLEAR GETS
  332.                 SET CONFIRM OFF
  333.                 * BACK TO NORMAL EDITING
  334.             ENDIF command = Y
  335.             * NOW THAT VOLUME NUMBERS TAKEN CARE OF WE CAN ADJUST THE REST OF
  336.             * THE DATA
  337.             ERASE
  338.             STORE 'Add Records Module' TO mode
  339.             STORE 'Enter as many records as you want.' TO prompt1
  340.             STORE "When done, enter blank for last name " TO prompt2
  341.             STORE "or Control 'Q' to end session" TO prompt3
  342.             @  1,25 SAY mode
  343.             @  2, 0 SAY "+---------------------------------------"
  344.             @  2,39 SAY "---------------------------------------+"
  345.             @  3, 5 SAY "ORDER NUMBER:"
  346.             @  3,43 SAY "Complete:"
  347.             @  4, 8 SAY "Last name:"
  348.             @  4,46 SAY "First:"
  349.             @  5,10 SAY "Address:"
  350.             @  6, 9 SAY "(line 2):"
  351.             @  7, 9 SAY "(line 3):"
  352.             @  8,13 SAY "City:"
  353.             @  8,46 SAY "State:"
  354.             @  8,65 SAY "ZIP:"
  355.             @  9,11 SAY "Amount:"
  356.             @  9,46 SAY "Enter:"
  357.             @  9,64 SAY "Ship "
  358.             @ 11,00 SAY "Enter Individual Volumes Ordered (999 when done): "
  359.             @ 12, 2 SAY "Volumes:"
  360.             @ 14, 2 SAY "Remarks:"
  361.             @ 16, 0 SAY "Backorder:"
  362.             @ 17,44 SAY "Catalog:"
  363.             @ 18, 2 SAY "Shipped:"
  364.             @ 18,26 SAY "Shipped:"
  365.             @ 18,62 SAY "Update:"
  366.             @ 19, 0 SAY "+---------------------------------------"
  367.             @ 19,39 SAY "---------------------------------------+"
  368.             @ 20,12 SAY prompt1
  369.             @ 21,12 SAY prompt2
  370.             @ 22,12 SAY prompt3
  371.             @  3,19 GET morder picture '999999999'
  372.             @  3,53 SAY mcomp picture '!'
  373.             @  4,19 GET mlname
  374.             @  4,53 GET mfname
  375.             @  5,19 GET maddr1
  376.             @  6,19 GET maddr2
  377.             @  7,19 GET maddr3
  378.             @  8,19 GET mcity
  379.             @  8,53 GET mstate picture '!!'
  380.             @  8,70 GET mzip picture '99999'
  381.             @  9,19 GET mamt
  382.             @  9,53 SAY mentered picture '99/99/99'
  383.             @  9,70 SAY mshipped picture '99/99/99'
  384.             @ 11,60 SAY mstatus
  385.             @ 12,11 SAY mvol1
  386.             @ 14,11 SAY mrem1
  387.             @ 15,11 SAY mrem2
  388.             @ 16,11 SAY mbo
  389.             @ 17,53 SAY mcatalog
  390.             @ 18,11 SAY mbo:ship picture '99/99/99'
  391.             @ 18,35 SAY mbo2:ship picture '99/99/99'
  392.             @ 18,70 SAY mdayu picture '99/99/99'
  393.             READ
  394.             CLEAR GETS
  395.             STORE t TO getit
  396.             STORE 999 TO mvol
  397.             STORE '          ' TO mstatus
  398.             DO WHILE getit
  399.                 @ 11,60 SAY mstatus
  400.                 @ 12,11 SAY mvol1
  401.                 @ 16,11 SAY mbo
  402.                 @ 11,48 GET mvol
  403.                 READ
  404.                 @ 11,60
  405.                 CLEAR GETS
  406.                 IF mvol = 999
  407.                     STORE f TO getit
  408.                     STORE '           ' TO mstatus
  409.                     STORE f TO avoid
  410.                 ELSE
  411.                     USE STOCK
  412.                     LOCATE FOR # = mvol + 1
  413.                     IF .NOT. EOF
  414.                         GOTO mvol + 1
  415.                         STORE t TO avoid
  416.                         IF open:inv - back:ord - wait:ship + recvd + pend > 0
  417.                             REPLACE change1 WITH t
  418.                             REPLACE open:inv WITH open:inv -1
  419.                             STORE 'IN STOCK ' to mstatus
  420.                             REPLACE ship WITH ship + 1
  421.                             REPLACE daych1 WITH mentered
  422.                         ELSE
  423.                             REPLACE change2 WITH t
  424.                             REPLACE back:ord WITH back:ord+1
  425.                             STORE 'BACKORDER' TO mstatus
  426.                             REPLACE backship WITH backship +1
  427.                             REPLACE daych2 WITH mentered
  428.                         ENDIF open:inv
  429.                     ELSE
  430.                         STORE 'TRY AGAIN ' TO mstatus
  431.                         STORE f TO avoid
  432.                     ENDIF .not. eof
  433.                 ENDIF mvol
  434.                 USE SIG/M
  435.                 IF avoid = t
  436.                     IF mstatus = 'IN STOCK'
  437.                         STORE TRIM(mvol1) + STR(mvol,3,0) + ','  TO mvol1
  438.                     ELSE
  439.                         STORE TRIM(mbo) + STR(mvol,3,0) + ','  TO mbo
  440.                     ENDIF mstatus
  441.                 ENDIF avoid
  442.             ENDDO while getit
  443.             STORE '           ' TO mstatus
  444.             @ 11,60 SAY mstatus
  445.             @ 14,11 GET mrem1
  446.             @ 15,11 GET mrem2
  447.             @ 17,53 GET mcatalog picture '!'
  448.             @ 18,11 GET mbo:ship picture '99/99/99'
  449.             @ 18,35 GET mbo2:ship picture '99/99/99'
  450.             @  9,70 GET mshipped picture '99/99/99'
  451.             @  3,53 GET mcomp picture '!'
  452.             READ
  453.             CLEAR GETS
  454.         ENDIF command = N
  455.         * OUR ADDING AND EDITING IS DONE - LET US ADD THE RECORD TO THE FILE
  456.         APPEND BLANK
  457.         REPLACE order WITH morder, comp WITH mcomp
  458.         REPLACE lname WITH mlname, fname WITH mfname
  459.         REPLACE addr1 WITH maddr1, addr2 WITH maddr2, addr3 WITH maddr3
  460.         REPLACE city WITH mcity, state WITH mstate, zip WITH mzip
  461.         REPLACE vol1 WITH mvol1
  462.         REPLACE amt WITH mamt
  463.         REPLACE entered WITH mentered, shipped WITH mshipped
  464.         REPLACE rem1 WITH mrem1, rem2 WITH mrem2
  465.         REPLACE bo WITH mbo, catalog WITH mcatalog, bo:ship WITH mbo:ship
  466.         REPLACE bo2:ship WITH mbo2:ship, dayu WITH mdayu
  467.         REPLACE new WITH t
  468.         STORE t TO more
  469.     ELSE
  470.         STORE f TO more
  471.     ENDIF mlname = ' '
  472. ENDDO while more
  473. * IF NO MORE RECORDS TO BE ADDED - ASK IF THEY WANT TO INDEX
  474. STORE 'Y' TO command
  475. ERASE
  476. @ 02,10 SAY  'The  newly added ORDERS will NOT appear'
  477. @ 03,10 SAY  'to be in the File until they are RE-INDEXED'
  478. @ 04,10 SAY  'and this will take some time....'
  479. @ 06,10 SAY  'You may re-index now or by using the'
  480. @ 07,10 SAY  'Maintenance Function number 6'
  481. @ 10,10 SAY  'Do you wish to RE-INDEX records NOW (Y/N)'
  482. @ 10,52 GET   command PICTURE '!'
  483. READ
  484. IF command = 'Y'
  485.     @ 14,10 SAY 'Records are now being re-indexed. '
  486.     @ 16,10 SAY 'Please be patient as this takes a little time....'
  487.     STORE CHR(PEEK(063)) TO dr
  488.     INDEX ON !(lname) TO &dr.:orders
  489. ENDIF command  = y
  490. * get our drive letter
  491. STORE CHR(PEEK(063)) TO dr
  492. SET INDEX TO &dr.:orders
  493. RELEASE ALL
  494. * set the colons back on
  495. SET COLON ON
  496. STORE t TO first
  497.